var Config = new Ext.extend(Ext.Panel, {
	border : false,
	layout : 'fit',
	initComponent : function() {
		this.initGrid();
		this.items = [this.grid];
		Config.superclass.initComponent.call(this);
	},
	addOrUpdate : function(isAdd) {
		var me = this;
		if (this.win) {
			this.win.close();
		}
		var rec = this.grid.getRecord();
		if (!isAdd) {
			if (!rec) {
				TopMy.alert('请选择要修改的记录！');
				return;
			}
		}
		this.form = new TopExt.FormPanel({
					border : false,
					autoScroll : true,
					padding : 5,
					defaults : {
						xtype : 'textfield',
						anchor : '100%'
					},
					labelWidth : 70,
					labelAlign : 'right',
					items : [{
								xtype : 'hidden',
								name : 'id'
							}, {
								name : 'tablename',
								fieldLabel : '表&emsp;&emsp;名',
								allowBlank : false
							}, {
								name : 'chinesename',
								fieldLabel : '表中文名',
								allowBlank : false
							}, {
								xtype : 'radiogroup',
								name : 'disabled',
								fieldLabel : '是否可用',
								items : [{
											boxLabel : '是',
											name : 'disabled',
											inputValue : '0'
										}, {
											boxLabel : '否',
											name : 'disabled',
											inputValue : '1',
											checked : true
										}],
								allowBlank : false
							}, {
								xtype : 'textarea',
								name : 'script',
								fieldLabel : 'SQL脚本',
								allowBlank : false,
								height : 280
							}],
					listeners : {
						afterrender : function(t) {
							if (!isAdd) {
								t.getForm().loadRecord(rec);
							}
						}
					}
				});
		this.win = new TopExt.Window({
			title : isAdd ? '新增同步配置信息' : '更新同步配置信息',
			width : 560,
			autoHeight : true,
			modal : true,
			items : [this.form],
			buttons : [{
				text : '保存',
				iconCls : 'icon-save',
				handler : function() {
					var url = My.url('/system/common/exec.do');
					var params = {
						sql : "insert into t_sync(id,tablename,chinesename,script,disabled) values((select to_number(nvl(max(id),0))+1 from t_sync),#{tablename},#{chinesename},#{script},#{disabled})"
					};
					if (!isAdd) {
						params.sql = "update t_sync set tablename=#{tablename},chinesename=#{chinesename},script=#{script},disabled=#{disabled} where id=#{id}";
					}
					TopMy.submit(me.form, {
								url : url,
								params : params,
								successCallback : function() {
									me.win.close();
									me.grid.getStore().reload();
								}
							});
				}
			}, {
				text : '取消',
				iconCls : 'icon-cancel',
				handler : function() {
					me.win.close();
				}
			}]
		});
		this.win.show();
		return this.form;
	},
	initGrid : function() {
		var me = this;
		var store = new Ext.data.JsonStore({
					fields : ['id', 'tablename', 'chinesename', 'script',
							'disabled'],
					url : My.url('/system/common/queryBySql.do'),
					baseParams : {
						sql : "select * from t_sync"
					},
					root : 'data',
					autoLoad : true
				});
		var sm = new Ext.grid.CheckboxSelectionModel({
					singleSelect : true
				});
		this.grid = new Ext.grid.EditorGridPanel({
					region : 'center',
					boxMinWidth : 480,
					loadMask : true,
					getRecord : function() {
						return me.grid.getSelectionModel().getSelected();
					},
					getRecords : function() {
						return me.grid.getSelectionModel().getSelections();
					},
					store : store,
					viewConfig : {
						forceFit : true
					},
					sm : sm,
					cm : new Ext.grid.ColumnModel({
								defaults : {},
								columns : [new Ext.grid.RowNumberer(), sm, {
											dataIndex : 'tablename',
											header : '表名',
											width : 180
										}, {
											dataIndex : 'chinesename',
											header : '表中文名',
											width : 250
										}, {
											dataIndex : 'script',
											header : 'SQL',
											width : 320
										}, {
											dataIndex : 'disabled',
											header : '是否可用',
											renderer : function(v, m) {
												if (v == '0') {
													m.attr = 'style="color:green;"';
													return '是';
												}
												m.attr = 'style="color:red;"';
												return '否';
											}
										}]
							}),
					bodyStyle : 'border-left:0;border-bottom:0;',
					tbar : new Ext.Toolbar({
								style : 'border-left:0;border-top:0;',
								items : [{
											text : '新增',
											iconCls : 'icon-add',
											handler : function() {
												me.addOrUpdate(true);
											}
										}, {
											text : '修改',
											iconCls : 'icon-update',
											handler : function() {
												me.addOrUpdate();
											}
										}, {
											text : '删除',
											iconCls : 'icon-delete',
											handler : function() {
												me.dele();
											}
										}, '-', {
											text : '同步',
											iconCls : 'icon-sync',
											handler : function() {
												me.sync();
											}
										}]
							}),
					listeners : {
						rowclick : function(g, i, e) {
						}
					}
				});
	},
	dele : function() {
		var me = this;
		var rec = me.grid.getRecord();
		if (!rec) {
			My.alert('请选择要删除的配置信息 ！');
			return;
		}
		My.confirm('确定要删除配置信息吗？', function(btn) {
					if (btn == 'no') {
						return;
					}
					My.request({
								url : My.url('/system/common/exec.do'),
								params : {
									id : rec.data.id,
									sql : "delete t_sync where id=#{id}"
								},
								successCallback : function() {
									me.grid.getStore().reload();
								}
							});
				});
	},
	sync : function() {
		var me = this;
		var recs = me.grid.getRecords();
		if (!recs || recs.length == 0) {
			My.alert('请选择要同步的表 ！');
			return;
		}
		var rec = recs[0];
		var sql = rec.data.script.replace(/\r\n/g, '\n');
		My.confirm('确定要同步选择的表数据吗？', function(btn) {
					if (btn == 'no') {
						return;
					}
					My.request({
								url : My.url('/system/common/exec.do'),
								params : {
									sql : sql
								},
								successCallback : function() {
									me.grid.getStore().reload();
								}
							});
				});
	}
});

Ext.onReady(function() {
			new Ext.Viewport({
						layout : 'fit',
						items : [new Config()]
					});
		});